今日對話:Tuple 與 Set 又是什麼?
我的 Prompt(提示詞):
「我已經學會 List 了。請用白話文告訴我 Python 的 Tuple(元組)與 Set(集合)是什麼?它們跟 List 到底差在哪裡?什麼時候該用哪一個?」
AI 導師這次給出了兩個極具代表性的比喻,讓我秒懂這兩者的核心差異:
語法:使用小括號 (),例如 point = (10, 20)。
核心特性:不可變(Immutable)!一旦建立了 Tuple,裡面的東西就絕對不允許新增、修改或刪除。
使用場景:適合儲存「不可以被修改」的資料(如:地理座標、RGB 顏色數值、帳號密碼預設設定)。因為它不可變,所以 Python 處理它時比 List 更省記憶體、速度更快!
語法:使用大括號 {},例如 skills = {"Python", "Git"}。
核心特性:
無序:裡面的東西沒有順序,所以不能用 set[0] 這種編號來拿資料。
絕對不重複:如果你把相同的東西塞進 Set 裡無數次,它只會保留一份!
使用場景:快速幫串列「去重複」,或是做數學上的交集(共同點)、聯集(全部)與差集(缺少的項目)比對。
瞭解了特性後,我在 VS Code 建立了 day09.py檔案來驗證 Tuple 的「不可變性」與 Set 的「去重與集合運算」:
python
1.Tuple (元組) 驗證:不可變性與優雅解包
gps_location = (25.033, 121.565) # 台北 101 的 GPS 座標 (緯度, 經度)
print(f"GPS 座標:{gps_location}")
嘗試修改 Tuple 內容會直接報錯!(此行取消註解會觸發 TypeError)
#gps_location[0] = 25.000
Tuple 解包 (Unpacking) 技巧:一次賦值給多個變數
lat, lon = gps_location
print(f"緯度:{lat} | 經度:{lon}")
2.Set (集合) 驗證:自動去重與技能比對
raw_tags = ["Python", "AI", "Python", "Web", "AI", "Git"]
直接把含有重複值的 List 轉成 Set,瞬間去重!
unique_tags = set(raw_tags)
print(f"\n原始標籤(包含重複):{raw_tags}")
print(f"去重後的標籤 Set:{unique_tags}")
集合運算:職缺技能比對
my_skills = {"Python", "Git", "VS Code"}
job_requirements = {"Python", "SQL", "Docker", "Git"}
print(f"\n我具備且符合要求的技能 (交集 &):{my_skills & job_requirements}")
print(f"我目前尚缺少的技能 (差集 -):{job_requirements - my_skills}")
學會了Tuple 不可變,專門保護不該被修改的資料;Set{}不重複且無序,專門做資料去重與集合比對。